package com.electric.service;

import java.util.Date;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.electric.entity.CustomRepairRecord;
import com.electric.entity.RepairRecord;

/**
 * <p>
 * 故障记录 服务类
 * </p>
 *
 * @author zhangbin
 * @since 2018-08-28
 */
public interface IRepairRecordService extends IService<RepairRecord> {
	/**
	 * @param pageNum
	 * @param pageSize
	 * @param customerName
	 * @param repairType
	 * @param voltageLevel
	 * @param startDate
	 * @param endDate
	 * @param failureDateStart
	 * @param failureDateEnd
	 * @return
	 */
	Page<CustomRepairRecord> selectPage(int pageNum, int pageSize, String customerName, String repairType,
			String voltageLevel, Date startDate, Date endDate, Date failureDateStart, Date failureDateEnd);
	
	/**
	 * 根据主键获取自定义故障记录
	 * @param seqId
	 * @return
	 */
	CustomRepairRecord queryCustomRepairRecord(String seqId);

	/**
	 * 通过户号判断是否存在该户号的故障记录
	 * 
	 * @param customerSeqId 户号主键
	 * @return
	 */
	boolean checkExistsByCustomer(String customerSeqId);

	/**
	 * 通过户号删除该户号的所有故障记录
	 * 
	 * @param customerSeqId 户号主键
	 * @return
	 */
	boolean cleanDataByCustomer(String customerSeqId);

	/**
	 * 通过户号主键将数据改户号的所有故障记录移动到另一个户号下面
	 * 
	 * @param customerSeqId    户号主键
	 * @param newCustomerSeqId 新户号主键
	 * @return
	 */
	boolean moveDataByCustomer(String customerSeqId, String newCustomerSeqId);

	/**
	 * 通过故障类型判断是否存在该故障类型的故障记录
	 * 
	 * @param repairTypeSeqId 故障类型主键
	 * @return
	 */
	boolean checkExistsByRepairType(String repairTypeSeqId);

	/**
	 * 通过故障类型删除该故障类型的所有故障记录
	 * 
	 * @param repairTypeSeqId 故障类型主键
	 * @return
	 */
	boolean cleanDataByRepairType(String repairTypeSeqId);

	/**
	 * 通过故障类型主键移动该故障类型的所有故障记录到另一个故障类型下面
	 * 
	 * @param repairTypeSeqId    故障类型主键
	 * @param newRepairTypeSeqId 新故障类型主键
	 * @return
	 */
	boolean moveDataByRepairType(String repairTypeSeqId, String newRepairTypeSeqId);

	/**
	 * 通过电压等级判断是否存在该电压等级的故障记录
	 * 
	 * @param voltageLevelSeqId 电压等级主键
	 * @return
	 */
	boolean checkExistsByVoltageLevel(String voltageLevelSeqId);

	/**
	 * 通过电压等级删除该电压等级的所有故障记录
	 * 
	 * @param voltageLevelSeqId 电压等级主键
	 * @return
	 */
	boolean cleanDataByVoltageLevel(String voltageLevelSeqId);

	/**
	 * 通过电压等级移动该电压等级的所有故障记录到另一个电压等级下面
	 * 
	 * @param voltageLevelSeqId    电压等级主键
	 * @param newVoltageLevelSeqId 新的电压等级
	 * @return
	 */
	boolean moveDataByVoltageLevel(String voltageLevelSeqId, String newVoltageLevelSeqId);
}
